import { Component, Vue } from 'vue-property-decorator';
import { mixinViewDialog } from "@/mixin/view/Dialog";
import { mixinViewForm } from "@/mixin/view/Form";
import { limiting } from '@/utils/Annotate'
/**
 * 这是一个弹窗表单mixin类
 * 集成mixinViewDialog,mixinViewForm
 */
@Component({
    mixins: [mixinViewDialog, mixinViewForm]
})
export class mixinDialogForm extends Vue {
    // 是否修改模式
    // 提交表单会根据此配置调用不同的方法去提交数据
    // true 修改，调用this.itemEdit
    // false 新增，调用this.itemAdd
    isEdit: boolean = false;
    // 是否详情模式
    isInfo: boolean = false;

    /**
     * 重写并调用mixinViewForm的submitFormSuccess方法
     *
     * @param {*} data 事件传递参数
     * @memberof mixinDialogForm
     */
    submitFormSuccess(data: any) {
        const me = this as any;
        // 新增了 dialogName 参数，用于 mixinDialogParent 中关闭弹窗
        data.dialogName = me.$vnode.data.ref;
        me.superSubmitFormSuccess(data);
    }

    /**
     * 重写并调用mixinViewDialog的onDialogClose方法
     *
     * @memberof mixinDialogForm
     */
    @limiting(300)
    onDialogClose() {
        const me = this as any;
        // 重置表单数据
        me.resetForm();
        me.superOnDialogClose();
    }
}
